package com.example.ymm.modules1.service.hl;

import com.example.ymm.base.BaseService;
import com.example.ymm.model.TableList;
import com.example.ymm.model.YmPageDto;
import com.example.ymm.modules1.entity.hl.yw.YwMoneyAffirmLog;
import com.example.ymm.modules1.query.hl.*;
import com.example.ymm.modules1.service.dto.heng.*;
import com.example.ymm.modules1.service.dto.ms.CountMoneyAffirmDto;
import com.example.ymm.modules1.service.dto.ms.CountMoneyUserDto;
import com.example.ymm.modules1.service.dto.ms.MsMoneyAffirmDto;
import com.example.ymm.modules1.service.dto.ms.MsMoneyAffirmOrderDto;

import java.util.List;

public interface YwMoneyAffirmLogService extends BaseService<YwMoneyAffirmLog> {


    /**
     * 更新数据
     */
    void initFn();

    TableList<MsMoneyAffirmDto> list(YwMoneyAffirmLogQueryCriteria criteria, YmPageDto ymPage);

    List<MsMoneyAffirmDto> msMoneyAffirmList(YwMoneyAffirmLogQueryCriteria criteria);

    List<YwMoneyAffirmLog> queryAll(YwMoneyAffirmLogQueryCriteria criteria);


    YwMoneyAffirmLog getByOrderNo(String orderNo);
    /**
     * 尾行合计
     * @param criteria
     * @return
     */
    CountMoneyAffirmDto countMoneyAffirm(YwMoneyAffirmLogQueryCriteria criteria);

    void removeByApproveNo(String approveNo);

    /**
     * 查看抽成明细
     * 
     * @param approveNo
     * @return
     */
    List<YwMoneyAffirmLog> listByApproveNo(String approveNo);

    /**
     * 重新获取数据
     * <p>
     * 重新拉取并更新业务确认日志数据
     * </p>
     */
    void refetch();



    /**
     * 迪卡侬抽成待确认列表
     * @param criteria
     * @return
     */
    TableList<MsMoneyAffirmOrderDto> dklMoneyAffirmPageList(YwMoneyAffirmLogQueryCriteria criteria, YmPageDto ymPage);


    Long getMaxNum();


    List<FaPiaoItem> shouKuanQueRenItemList(FaPiaoItemQueryCriteria criteria);


    /**
     * 收款确认详情 所有 未排除选项
     */
    List<FaPiaoItem> shouKuanQueRenItemAllList(FaPiaoItemQueryCriteria2 criteria2);


    /**
     *  已排除 收款确认详情
     */
    List<ExcludeFaPiaoItem> excludeShouKuanQueRenList(FaPiaoItemQueryCriteria criteria);



    List<YuShouItem> yushoukuanItemList(FaPiaoItemQueryCriteria criteria);


    /**
     * 数据-篡改 同步业务结算列表
     * @param criteria
     * @return
     */
    List<MsMoneyAffirmDto> msChangeAffirmList(YwMoneyAffirmLogQueryCriteria criteria);



    /**
     * 查询 数据-篡改 1
     * 2024年 1月之后 到 25年 7月 0704 客户 接单人如果为 张鑫改为曾丽娜
     * @return
     */
    List<MsMoneyAffirmDto> selectChange1List();

    /**
     * 执行 查询 数据-篡改 1 的数据进行存储
     * 存储后 则变为 临时表关联 篡改
     */
    void executeSelectChange1();


    /**
     * 将 MsMoneyAffirmDto 数据转化到 YwMoneyAffirmLog
     * @param affirmDto
     * @param affirmLog
     */
    void adapterAffirmDtoToAffirmLog(MsMoneyAffirmDto affirmDto,YwMoneyAffirmLog affirmLog);

    /**
     * 普通业务员
     * 增加 排除
     * @param dto
     */
    void addExcludeAffirmLog(YwApproveCreateDto dto);



    /**
     * 获取排除数据
     * @return
     */
    List<YwMoneyAffirmLog> getExcludeAffirmList(String types);



    /**
     * 查看审核通过的编号 表格
     * @return
     */
    TableList<YwMoneyAffirmLog> tablePassAffirmList(YwMoneyAffirmLogQueryCriteria criteria, YmPageDto ymPage);

    /**
     * 查看已抽成 编号
     * @return
     */
    List<YwMoneyAffirmLog> getPassAffirmList(YwMoneyAffirmLogQueryCriteria criteria);


    /**
     * 删除排除
     * @param id
     */
    void removeExcludeAffirmLog(String id);


    /**
     *    业务统计 部门金额
     */
    CountMoneyAffirmDto getCountDeptTotalLog(String month);


    /**
     *    业务统计 部门金额 表部
     */
    List<CountMoneyUserDto> getCountDeptTotalLog_biao(YwMoneyAffirmLogCountQueryCriteria criteria);

    /**
     * 统计订单编号金额
     * @param criteria
     * @return
     */
    List<CountMoneyUserDto> countApproverNoTotal(YwMoneyAffirmLogCountQueryCriteria criteria);


    /**
     * 期初数据
     * @param criteria
     * @return
     */
    List<QiChuItem> qiChuItemList(QiChuQueryCriteria criteria);


    QiChuItem qiChuItemOne(QiChuQueryCriteria criteria);


}
